package com.qezhhnjy.leetcode.question.tree;

import com.qezhhnjy.leetcode.question.Generate;
import com.qezhhnjy.leetcode.entity.TreeNode;

/**
 * @author zhaoyangfu - 2020/12/6 22:45
 * 输入一棵二叉树的根节点，求该树的深度。从根节点到叶节点依次经过的节点（含根、叶节点）形成树的一条路径，最长路径的长度为树的深度。
 *
 * 例如：
 *
 * 给定二叉树 [3,9,20,null,null,15,7]，
 *
 *     3
 *    / \
 *   9  20
 *     /  \
 *    15   7
 * 返回它的最大深度 3 。
 *
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof
 */
public class BinaryTreeDepth implements Generate<TreeNode,Integer> {

    @Override
    public Integer generate(TreeNode root) {
        if (root == null)return 0;

        int left = generate(root.left);
        int right = generate(root.right);

        return Math.max(left,right) + 1;
    }

    public int maxDepth(TreeNode root) {
        return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }
}
